//! # RustCloud 配置管理库
//!
//! 提供了 RustCloud 微服务框架的统一配置管理解决方案。该库支持多种配置源、
//! 动态配置更新、配置验证和多格式序列化等功能，是微服务配置管理的核心组件。
//!
//! ## 核心功能
//!
//! * **多源配置加载** - 支持文件、环境变量、远程配置中心等多种配置源
//! * **动态配置管理** - 实时监控配置变化并自动更新应用配置
//! * **配置格式支持** - 支持 TOML、YAML、JSON 等主流配置格式
//! * **配置验证** - 提供完整的配置有效性验证机制
//! * **类型安全** - 基于 Rust 类型系统的强类型配置管理
//!
//! ## 模块组织
//!
//! * [`config`] - 核心配置结构和序列化功能
//! * [`loader`] - 配置加载器，支持多种数据源
//! * [`manager`] - 配置管理器，提供动态更新和监控
//! * [`source`] - 配置源抽象，支持扩展不同的配置来源
//!
//! ## 快速开始
//!
//! ```rust,no_run
//! use rustcloud_config::*;
//! use std::time::Duration;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), String> {
//! // 从文件加载配置
//! let config = RustCloudConfig::from_file("config.yaml")?;
//!
//! // 验证配置有效性
//! config.validate()?;
//!
//! // 使用配置管理器进行动态管理
//! let (mut manager, _receiver) = ConfigManagerBuilder::new()
//!     .reload_interval(Duration::from_secs(30))
//!     .add_source(ConfigSource::File {
//!         path: "config.yaml".to_string(),
//!         format: ConfigFormat::Yaml,
//!     })
//!     .build()
//!     .await?;
//! let _config = manager.load_config().await?;
//! Ok(())
//! }
//! ```
//!
//! ## 配置示例
//!
//! ### YAML 格式配置文件
//! ```yaml
//! application:
//!   name: "user-service"
//!   version: "1.0.0"
//!   port: 8080
//!
//! registry:
//!   registry_type: "nacos"
//!   server_addr: "127.0.0.1:8848"
//!
//! gateway:
//!   server_addr: "0.0.0.0:8080"
//!   routes:
//!     - path_prefix: "/api/v1/users"
//!       service_name: "user-service"
//! ```
//!
//! ### 程序化配置
//! ```rust
//! use rustcloud_config::RustCloudConfig;
//! use rustcloud_core::ApplicationConfig;
//!
//! let config = RustCloudConfig {
//!     application: ApplicationConfig {
//!         name: "user-service".to_string(),
//!         version: "1.0.0".to_string(),
//!         port: 8080,
//!         ..Default::default()
//!     },
//!     ..Default::default()
//! };
//! ```

pub mod config;
pub mod loader;
pub mod manager;
pub mod source;

// 🆕 新增：核心抽象接口层
pub mod core;

// 🆕 新增：通用配置组件
pub mod component;

// 🆕 新增：动态配置更新
pub mod dynamic;

// 🆕 新增：统一错误处理
pub mod error;

// 🆕 新增：配置广播集成功能
#[cfg(feature = "broadcast")]
pub mod broadcast;
#[cfg(feature = "broadcast")]
pub mod bus_broadcast;

// 🆕 分布式配置中心模块（条件编译）
#[cfg(feature = "server")]
pub mod server;

#[cfg(feature = "client")]
pub mod client;

// 🆕 新增：集成测试模块
#[cfg(test)]
mod tests;

#[cfg(test)]
mod integration_tests;

// 🆕 新增：Mock测试模块
#[cfg(test)]
mod core_mock_tests;

#[cfg(test)]
mod basic_tests;

// 🆕 新增：配置广播功能基础测试模块  
#[cfg(test)]
#[cfg(feature = "broadcast")]
mod broadcast_basic_tests;






// ✅ 保持现有导出（向后兼容）
pub use config::*;
pub use loader::*;
pub use manager::*;
// 从 source 模块导出
pub use source::*;

// 🆕 导出核心抽象接口
pub use core::*;

// 🆕 导出通用配置组件
pub use component::*;

// 🆕 从 dynamic 模块导出（排除 ConfigSource 以避免冲突）
pub use dynamic::{ConfigChangeEvent, ConfigChangeType, DynamicConfigSource, ConfigChangeListener, DynamicConfigManager, LoggingConfigListener, BackupConfigListener, global_dynamic_config_manager, current_timestamp, get_timestamp_string};

// 🆕 导出统一错误处理
pub use error::{ConfigCenterError, ConfigCenterResult};

// 🆕 导出配置广播功能
#[cfg(feature = "broadcast")]
pub use broadcast::*;
#[cfg(feature = "broadcast")]
pub use bus_broadcast::*;

// 🆕 条件导出新功能
#[cfg(feature = "server")]
pub use server::*;

#[cfg(feature = "client")]
pub use client::*;